/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao.basedato;

import beans.BeanProyecto;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.logging.Level;
import java.util.logging.Logger;
import utilitarios.Fechas;

/**
 *
 * @author Administrador
 */
public class DaoProyecto {
    private ArrayList proyectos;


    public static boolean insertarProyecto(BeanProyecto dbProyecto) throws Exception {
        boolean resultado = false;
        try {
            Conexion cnx = new Conexion();
            Connection con = cnx.getConexion();
            String insertStatement = "INSERT INTO PROYECTO values(?,?,?,?)";
            PreparedStatement pst = con.prepareStatement(insertStatement);
            pst.setInt(1, dbProyecto.getId());
            pst.setString(2, dbProyecto.getNombre());
            pst.setString(3, dbProyecto.getCliente());
            pst.setString(4, dbProyecto.getEstado());
            pst.execute();
            pst.close();
            resultado = true;

        } catch (SQLException se) {
            throw new Exception(se.getMessage());
        }
        return resultado;
    }

    public ArrayList ListarProyectos() throws Exception {
        proyectos = new ArrayList();

        try {
            Conexion cnx = new Conexion();
            Connection con = cnx.getConexion();
            String selectStatement = "* from PROYECTO";
            PreparedStatement prepStmt = con.prepareStatement(selectStatement);
            ResultSet rs = prepStmt.executeQuery();

            while (rs.next()) {
                BeanProyecto bd =
                        new BeanProyecto(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4));
                if (rs.getInt(1) > 0) {
                    proyectos.add(bd);
                }
            }

            prepStmt.close();
        } catch (SQLException ex) {
            throw new Exception(ex.getMessage());
        }
        Collections.sort(proyectos);

        return proyectos;
    }

    public BeanProyecto buscarProyecto(int Id) throws Exception {
        try {
            Conexion cnx = new Conexion();
            Connection con = cnx.getConexion();
            String selectStatement = "select * from PROYECTO where ID = ? ";
            PreparedStatement prepStmt = con.prepareStatement(selectStatement);
            prepStmt.setInt(1, Id);
            ResultSet rs = prepStmt.executeQuery();

            if (rs.next()) {
                BeanProyecto bd =
                        new BeanProyecto(rs.getInt(1), rs.getString(2),
                        rs.getString(3), rs.getString(4));
                prepStmt.close();
                return bd;
            } else {
                prepStmt.close();
                throw new Exception("No encontro proyecto identificado con ID: " + Id);
            }
        } catch (SQLException ex) {
            System.err.println(ex.getMessage());
            throw new Exception("No encontro proyecto identificado con ID: " + Id + " " + ex.getMessage());
        }
    }   
    
    public static boolean actualizarProyecto(BeanProyecto dbProyecto) throws Exception {
        boolean resultado = false;
        try {  
            Conexion cnx = new Conexion();
            Connection con = cnx.getConexion();
            String insertStatement = "update PROYECTO set ID = ?, NOMBRE = ?, CLIENTE = ?, ESTADO = ? where  ID = ?";
            PreparedStatement pst = con.prepareStatement(insertStatement);
            pst.setInt(1, dbProyecto.getId());
            pst.setString(2, dbProyecto.getNombre());
            pst.setString(3, dbProyecto.getCliente());
            pst.setString(4, dbProyecto.getEstado());
            pst.execute();
            pst.close();
            resultado = true;
 
         } catch (SQLException se) {
            throw new Exception(se.getMessage());
        }
        return resultado;
    }
    

    public static boolean eliminarProyecto (int id) throws Exception {
        boolean resultado = false;
        try {  
            Conexion cnx = new Conexion();
            Connection con = cnx.getConexion();
            String insertStatement = "DELETE FROM PROYECTO WHERE ID = ?" ;
            PreparedStatement pst = con.prepareStatement(insertStatement);
            pst.setInt(1, id);
            pst.executeUpdate();
            pst.close();
            resultado = true;
 
         } catch (SQLException se) {
            throw new Exception(se.getMessage());
        }
        return resultado;
    }
}
